home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Comm / AmiTCP30b2.lha / src / amitcp / kern / config_var.awk (.txt) < prev    next >
LaTeX Document  |  1994-03-28  |  6KB  |  225 lines

  1. # -*- C -*- --- well, not actually...
  2. # $Id: config_var.awk,v 1.7 1993/11/06 23:51:22 ppessi Exp puhuri $
  3. # Copyright 
  4.  1993 AmiTCP/IP Group, <amitcp-group@hut.fi>
  5. #                  Helsinki University of Technology, Finland.
  6. #                  All rights reserved.
  7. # Created      : Wed Apr 28 21:09:22 1993 puhuri
  8. # Last modified: Thu Nov  4 07:33:09 1993 ppessi
  9. # $Log: config_var.awk,v $
  10. # Revision 1.7  1993/11/06  23:51:22  ppessi
  11. # Added `global' definitions, allowing to export second level strings.
  12. # Revision 1.6  1993/06/04  11:16:15  jraja
  13. # Fixes for first public release.
  14. # Revision 1.5  1993/05/04  13:44:00  ppessi
  15. # Fixed Aliasing, removed level 0 \begin{description} \end{description}
  16. # Revision 1.4  93/05/03  13:46:42  13:46:42  puhuri (Markus Peuhkuri)
  17. # Modified to use \Alias(es) command.
  18. # Revision 1.3  93/04/29  22:05:16  22:05:16  puhuri (Markus Peuhkuri)
  19. # Now gawk supouse substitute FILENAME
  20. # Revision 1.2  93/04/29  08:55:05  08:55:05  puhuri (Markus Peuhkuri)
  21. # Changed field seperator to ; surrounded by zero or more spaces or tabs.
  22. # Revision 1.1  93/04/28  21:55:56  21:55:56  ppessi (Pekka Pessi)
  23. # Initial revision
  24. BEGIN {
  25.   FS="[\t ]*;[\t ]*"; 
  26.   level=1; 
  27.   tab=""; 
  28.   vars=""; 
  29.   var2="";
  30.   GFN = "kern/variables.src (" FILENAME ")";
  31.   TEXTARGET=0;CTARGET=0;TEXITARGET=0
  32.   if (TARGETTI == "TEX") {
  33.     TEXTARGET = 1;
  34.     startcomment = "% -*- LaTeX -*-";
  35.     comment = "%";
  36.     endcomment = "%";
  37.   }else if (TARGETTI == "TEXINFO") {
  38.     level = 0; 
  39.     TEXITARGET = 1;
  40.     startcomment = "@c -*- Texinfo -*-";
  41.     comment = "@c ";
  42.     endcomment = "@c ";
  43.   } else if (TARGETTI == "C") {
  44.     CTARGET = 1;
  45.     startcomment = "/* -*- C -*-";
  46.     comment = " *";
  47.     endcomment = " */";
  48.   } else printf "Unknown target format '%s'\n",TARGETTI > "/dev/stderr"
  49.   print startcomment;
  50.   printf "%s This file is automatically generated from %s\n", comment, GFN;
  51.   print comment;
  52.   printf "%s Do not change this file\n", comment;
  53.   print endcomment;
  54.   if (CTARGET) {
  55.     print "";
  56.     print "\#include <sys/param.h>";
  57.     print "\#include <sys/socket.h>";
  58.     print "\#include <netinet/in.h>";
  59.     print "\#include <kern/amiga_includes.h>";
  60.     print "\#include <kern/amiga_config.h>";
  61.     print "";
  62. # skip comments and empty lines
  63. /^#/ { next } 
  64. /^ *$/ { next }
  65. # Collect global variables
  66. /^global/ { 
  67.   gsub("^global ", ""); 
  68.   globals = globals "\n" $0;
  69.   next;
  70. # Change _ to \_ in TeX
  71. TEXTARGET && /_/ { gsub("_","\\_") }
  72. # Generate indentation, add environment parenthesis
  73. level != $2 && TEXTARGET { 
  74.   if (level < $2) 
  75.     for(i=level; i < $2; i++) {
  76.       tab = sprintf("%"2*i"s", "");
  77.       print tab "\\begin{description}";
  78.     } 
  79.   else 
  80.     for(i=level; i > $2; i--) {
  81.       tab = sprintf("% "2*i "s", "");
  82.       print tab "\\end{description}";
  83.     }
  84.   level = $2;
  85.   tab = sprintf("%" 2*level "s", "");
  86.   print "";
  87. TEXTARGET { 
  88.   n = split($1,temp,"=");
  89.   printf "%s\\item[\\code{%s}] %s\n",tab,temp[n],$3;
  90.   if(n>1) {
  91.     printf tab " \\Alias%s{%s",(n>2)?"es":"",temp[1];
  92.       for(i=2;i<n;i++) 
  93.     printf "{\\rm ,} %s",temp[i];
  94.     print "}";
  95.   print "";
  96.   if ($2 == 1) {
  97.     # Skip C declarations
  98.     getline dummy; 
  99.     getline dummy; 
  100. # TEXINFO
  101. $2 == 2 && TEXITARGET { 
  102.   if (level == 1)
  103.       print "@table @code";    
  104.   n = split($1,temp,"=");print "level=" $2, n > "/dev/stderr"
  105.   printf "@item %s\n",temp[n];
  106.   for(i=1;i<n;i++) {
  107.     printf "@itemx %s\n",temp[i];
  108.   gsub("\\\\n","\n",$3) # replace with newlines
  109.   print $3;print "";
  110.   level = $2;
  111.   print "";
  112. $2 == 1 && TEXITARGET { 
  113.   if (level == 2)
  114.     print "@end table";
  115.   if (level != 0)
  116.     print "@end deffn\n";
  117.   n = split($1,temp,"="); print "level=" $2, n > "/dev/stderr"
  118.   printf "@deffn {AREXX Variable} %s\n",temp[n];
  119.   for(i=1;i<n;i++) {
  120.     printf "@deffnx {AREXX Variable} %s\n",temp[i];
  121.   gsub("\\\\n","\n",$3) # replace with newlines
  122.   print $3;print "";
  123.   level = $2;
  124.   print "";
  125.   if ($2 == 1) {
  126.     # Skip C declarations
  127.     getline dummy; 
  128.     getline dummy; 
  129. ($2 != 1 && $2 != 2) && TEXITARGET {
  130.   print FILENAME ":" FNR ": Invalid level: " $2 > "/dev/stderr"
  131. # Make a C file
  132. CTARGET {
  133.   n = split($1, temp, "=");
  134.   if ($2 == 1) {
  135.     if (length(var2) > 0) {
  136.       printf "/* %s */\n#define KW_%s \\\n \"", varcom, curvar;
  137.       n2 = split(var2, t2, ",");
  138.       cnt = 0;
  139.       for (i = 1; i < n2; i++) {
  140.     if ((cnt + length(t2[i])) > 60) {
  141.       printf "\" \\\n \"";
  142.       cnt=0;
  143.     cnt += length(t2[i]);
  144.     printf "%s,",t2[i];
  145.       }
  146.       if (length(t2[n2]) + cnt > 60) 
  147.     printf "\" \\\n \"";
  148.       printf "%s\"\n\n", t2[n2];
  149.     }
  150.     curvar=temp[n];
  151.     varcom=$3;
  152.     if (length(vars) > 0) {
  153.       vars=vars "," $1;
  154.     } else {
  155.       vars=$1;
  156.     }
  157.     var2 = "";
  158.     # Get external vars
  159.     getline extern;
  160.     externs = externs "\n" extern;
  161.     # get variables line
  162.     getline varline;
  163.     if (length(varlines) > 0) {
  164.       varlines = varlines ",\n" varline;
  165.     } else {
  166.       varlines = varline;
  167.     }
  168.   } else {
  169.     if(length(var2) == 0) {
  170.       var2=$1;
  171.     } else {
  172.       var2 = var2 "," $1;
  173.     }
  174. END {
  175.   if (TEXTARGET) {
  176.     for(i = level; i > 1; i--)
  177.       print "\\end{description}";
  178.   } else if(TEXITARGET) {
  179.     if (level == 2)
  180.        print "@end table";
  181.     if (level != 0)
  182.        print "@end deffn\n";
  183.   } else if(CTARGET) {
  184.     if (length(var2) > 0) {
  185.       printf "/* %s */\n#define KW_%s \\\n \"", varcom, curvar;
  186.       n2 = split(var2, t2, ",");
  187.       cnt = 0;
  188.       for(i=1;i<n2;i++) {
  189.     if((cnt+length(t2[i]))>60) {
  190.       printf "\" \\\n \"";
  191.       cnt=0;
  192.     cnt += length(t2[i]);
  193.     printf "%s,",t2[i];
  194.       }
  195.       if (length(t2[n2])+cnt> 60) printf "\" \\\n \"";
  196.       printf "%s\"\n\n", t2[n2];
  197.     }
  198.     if (length(vars) > 0) {
  199.       printf "/* %s */\nSTRPTR KW_%s =\n  \"", "Level 1 variables", "VARS";
  200.       n2 = split(vars, t2, ","); cnt=0;
  201.       for(i=1; i<n2; i++) {
  202.     if(cnt + length(t2[i]) > 60) {
  203.       printf "\"\n  \"";
  204.       cnt=0;
  205.     cnt+=length(t2[i]);
  206.     printf "%s,",t2[i];
  207.       }
  208.       printf "%s\";\n\n", t2[n2];
  209.     }
  210.     if (length(externs)) {
  211.       print "/* extern declarations */";
  212.       print externs;
  213.       print;
  214.     }
  215.     if (length(globals)) {
  216.       printf "/* Global variables */";
  217.       print globals;
  218.       print;
  219.     }
  220.     if (length(varlines)) {
  221.       print "struct cfg_variable variables[] = {";
  222.       print varlines;
  223.       print "};";
  224.     }
  225.